package com.xjh.basestudy.designmode.structureMode.structureMode3_Decorator.p2_shelfDecorator;

import com.xjh.basestudy.designmode.structureMode.structureMode3_Decorator.p1_origin.Showable;

/**
 * @Author XuJianHua
 * @Date 2022/9/26 22:23
 * @Description 打粉底
 * 我们将化妆品装饰器类修改为装饰器抽象类，这主要是为了不允许用户直接实例化此类。接着我们重构了第10行的展示方法show()，
 * 其中只是调用了被装饰者的show()方法，而不再做任何装饰操作，至于具体如何装饰则属于其子类的某个化妆品类的操作范畴了，例如之前的“打粉底”操作，我们将其分离出来独立成类，
 */
public abstract class Decorator implements Showable {

    protected Showable showable;

    public Decorator(Showable showable) {
        this.showable = showable;
    }

    @Override
    public void show() {
        showable.show();//直接调用不加任何装饰
    }

}